package foroweb.controllers;

import foroweb.ejb.*;
import foroweb.entidades.*;
import java.io.*;
import java.net.URLEncoder;
import java.util.logging.*;
import javax.ejb.EJB;
import javax.faces.bean.*;
import javax.faces.context.*;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;

@ManagedBean
@ViewScoped
public class NuevoMensajeController implements Serializable{
    
    //Atributos
    @EJB
    private AccionMensaje am;
    @EJB
    private Busquedas buscar;
    private Hilo hilo;
    private Mensaje mensaje;

    //Constructores
    public NuevoMensajeController(){
        mensaje=new Mensaje();
        hilo=new Hilo();
    }

    //Getters y Setters
    public Hilo getHilo() {
        return hilo;
    }
    public void setHilo(Hilo hilo) {
        this.hilo = hilo;
    }
    public Mensaje getMensaje() {
        return mensaje;
    }
    public void setMensaje(Mensaje mensaje) {
        this.mensaje = mensaje;
    }

    //Metodos
    public String publicar(){
        User u =(User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        mensaje.setUsuario(buscar.buscarUsuario(u.getUsername()));
        mensaje.setHilo(hilo);
        am.publicar(mensaje);
        ExternalContext extC = FacesContext.getCurrentInstance().getExternalContext();
        String charEncondig = extC.getRequestCharacterEncoding();
        try {
            String name = URLEncoder.encode("idhilo", charEncondig);
            String value = URLEncoder.encode(""+hilo.getId(), charEncondig);
            String viewId = extC.getRequestContextPath() + "/hilo.faces?" + name +"=" + value;
            String urlLink = extC.encodeActionURL(viewId);
            extC.redirect(urlLink);
        } catch (IOException ex) {
            Logger.getLogger(NuevoMensajeController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
}
